// +0 rw
extern volatile uint16_t uart_dl;
// +0 r
extern const volatile uint8_t uart_rbr;
// +0 w
extern volatile uint8_t uart_thr;
// +1 rw
extern volatile uint8_t uart_ier;
// +2 r
extern const volatile uint8_t uart_iir;
// +2 w
//extern volatile uint8_t uart_fcr;
// +3 rw
extern volatile uint8_t uart_lcr;
// +5 r
extern const volatile uint8_t uart_lsr;

void uart_init(void);
void uart_print(const char *s);
void uart_recv(uint8_t *buf, int n);
uint8_t uart_recv_byte(void);
void uart_send_byte(uint8_t c);
int putchar(int c);
int puts(const char *s);
int printf(const char *format, ...);
